home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / cross / GBDK-2.0.lha / GBDK / lib / delay.s < prev    next >
Text File  |  1998-10-01  |  1KB  |  73 lines

  1.     .include    "global.s"
  2.  
  3.     .area    _CODE
  4.  
  5.     ;; Delay DE milliseconds
  6.     ;; 
  7.     ;; Entry conditions
  8.     ;;   DE = number of milliseconds to delay (1 to 65536, 0 = 65536)
  9.     ;; 
  10.     ;; Register used: AF, DE
  11.     .CPMS    = 4194/4    ; 4.194304 MHz
  12. .delay::            ; 6 cycles for the CALL
  13.     PUSH    BC        ; 4 cycles
  14.     CALL    .dly        ; 12 cycles to return from .dly (6+1+5)
  15.     LD    B,#(.CPMS/20)-2 ; 2 cycles
  16.                 ; =========
  17.                 ; 24 cycles
  18. .ldlp:
  19.     JR    1$        ; 3 cycles
  20. 1$:    JR    2$        ; 3 cycles
  21. 2$:    JR    3$        ; 3 cycles
  22. 3$:    JR    4$        ; 3 cycles
  23. 4$:    JR    5$        ; 3 cycles
  24. 5$:    DEC    B        ; 1 cycles
  25.     JP    NZ,.ldlp    ; 3 cycles (if TRUE: 4 cycles)
  26.     NOP            ; 1 cycles
  27.                 ; =========
  28.                 ; 20 cycles
  29.     ;; Exit in 16 cycles
  30.     POP    BC        ; 3 cycles
  31.     JR    6$        ; 3 cycles
  32. 6$:    JR    7$        ; 3 cycles
  33. 7$:    JR    8$        ; 3 cycles
  34. 8$:    RET            ; 4 cycles
  35.                 ; =========
  36.                 ; 16 cycles
  37.  
  38.     ;; Delay all but last millisecond
  39. .dly:
  40.     DEC    DE        ; 2 cycles
  41.     LD    A,E        ; 1 cycles
  42.     OR    D        ; 1 cycles
  43.     RET    Z        ; 2 cycles (upon return: 5 cycles)
  44.     LD    B,#(.CPMS/20)-1 ; 2 cycles
  45.                 ; =========
  46.                 ; 8 cycles
  47. .dlp:
  48.     JR    1$        ; 3 cycles
  49. 1$:    JR    2$        ; 3 cycles
  50. 2$:    JR    3$        ; 3 cycles
  51. 3$:    JR    4$        ; 3 cycles
  52. 4$:    JR    5$        ; 3 cycles
  53. 5$:    DEC    B        ; 1 cycles
  54.     JP    NZ,.dlp        ; 3 cycles (if TRUE: 4 cycles)
  55.     NOP            ; 1 cycles
  56.                 ; =========
  57.                 ; 20 cycles
  58.     ;; Exit in 15 cycles
  59.     JR    6$        ; 3 cycles
  60. 6$:    JR    7$        ; 3 cycles
  61. 7$:    JR    8$        ; 3 cycles
  62. 8$:    JR    .dly        ; 3 cycles
  63.                 ; =========
  64.                 ; 12 cycles
  65.  
  66. _delay::
  67.     LDA    HL,2(SP)    ; Skip return address
  68.     LD    E,(HL)        ; DE = delay
  69.     INC    HL
  70.     LD    D,(HL)
  71.     CALL    .delay
  72.     RET
  73.